#[derive(Default, Debug, Clone, Copy)]
pub struct BlockFillStage {
    pub id: u16,
    pub rand_rate: u16,
    pub pass1_rate: u16,
    pub pass2_rate: u16,
    pub pass2_calc3_rate: u16,
    pub iter_no_big: u16,
    // good, flat, easy, medium, hard
    pub good_block_rate: [[u16; 8]; 3],
    pub rand_block_rate: [[u16; 8]; 3],
}

pub fn get_fill_stages() -> Vec<BlockFillStage> {
    vec![
        BlockFillStage {
            id: 0,
            rand_rate: 50,
            pass1_rate: 100,
            pass2_rate: 850,
            pass2_calc3_rate: 800,
            iter_no_big: 300,
            // good, flat, easy, medium, hard
            good_block_rate: [
                [1000, 0, 0, 0, 0, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
            rand_block_rate: [
                [0, 850, 150, 0, 0, 0, 0, 0],
                [0, 800, 0, 100, 100, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
        },
        BlockFillStage {
            id: 1,
            rand_rate: 200,
            pass1_rate: 300,
            pass2_rate: 500,
            pass2_calc3_rate: 200,
            iter_no_big: 300,
            // good, flat, easy, medium, hard
            good_block_rate: [
                [1000, 0, 0, 0, 0, 0, 0, 0],
                [0, 1000, 0, 0, 0, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
            rand_block_rate: [
                [0, 850, 150, 0, 0, 0, 0, 0],
                [0, 800, 0, 100, 100, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
        },
        BlockFillStage {
            id: 2,
            rand_rate: 600,
            pass1_rate: 300,
            pass2_rate: 100,
            pass2_calc3_rate: 200,
            iter_no_big: 300,
            // good, flat, easy, medium, hard
            good_block_rate: [
                [0, 1000, 0, 0, 0, 0, 0, 0],
                [0, 0, 1000, 0, 0, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
            rand_block_rate: [
                [0, 850, 150, 0, 0, 0, 0, 0],
                [0, 800, 0, 100, 100, 0, 0, 0],
                [0, 100, 0, 100, 700, 0, 0, 0],
            ],
        },
        BlockFillStage {
            id: 3,
            rand_rate: 900,
            pass1_rate: 100,
            pass2_rate: 0,
            pass2_calc3_rate: 0,
            iter_no_big: 300,
            // good, flat, easy, medium, hard
            good_block_rate: [
                [0, 1000, 0, 0, 0, 0, 0, 0],
                [0, 0, 1000, 0, 0, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
            rand_block_rate: [
                [0, 850, 150, 0, 0, 0, 0, 0],
                [0, 800, 0, 100, 100, 0, 0, 0],
                [0, 100, 0, 100, 700, 0, 0, 0],
            ],
        },
        BlockFillStage {
            id: 4,
            rand_rate: 500,
            pass1_rate: 300,
            pass2_rate: 200,
            pass2_calc3_rate: 100,
            iter_no_big: 300,
            // good, flat, easy, medium, hard
            good_block_rate: [
                [0, 1000, 0, 0, 0, 0, 0, 0],
                [0, 0, 1000, 0, 0, 0, 0, 0],
                [1000, 0, 0, 0, 0, 0, 0, 0],
            ],
            rand_block_rate: [
                [0, 850, 150, 0, 0, 0, 0, 0],
                [0, 800, 0, 100, 100, 0, 0, 0],
                [0, 100, 0, 100, 700, 0, 0, 0],
            ],
        },
    ]
}
